Data compression, both lossless and lossy, is highly desirable in many applications including graphics frame buffers where large amounts of data are to be stored and read out. With the increasing use of graphics in small devices such as mobile communication devices the use of compressed data is therefore highly desirable.
General lossy image compression, when applied to an entire image, is well known in computer graphics with such standards as JPEG and GIF. Less commonly used are lossless image compression methods such as PNG, although any lossless compression tool, such as Compress or ZIP could be applied to an uncompressed source. The problem with all of these methods, however, is that a) they are expensive for on-the-fly compression and decompression and b) do not allow random access to data.
Some lossy compression schemes, such as those specifically designed for texture compression (A review of several known schemes is given in “Texture Compression using Low-Frequency Signal Modulation”, S. Fenney, Graphics Hardware 2003), do provide random access to data and simple decompression steps. A major shortcoming of these methods, however, is that the compression algorithm is far more expensive than the decompression algorithm, (i.e. they use asymmetric encoding and decoding), and thus are not suitable for real-time operations. It is also difficult to adapt these methods to provide lossless compression.
With the exception of Rasmusson et al's system, (described shortly), symmetric (i.e. approximately equal encoding and decoding costs), real-time compression systems for data buffers (such as frame and Z buffers) have so far been limited to quite simple schemes. A review of such systems can be found in “Exact and Error-bounded Approximate Color Buffer Compression and Decompression” (Rasmusson, Hasselgren, & Akenine-Möller, Graphics Hardware 2007).
Rasmusson et al. also present a more advanced compression and decompression system for RGB data, but this requires expansion of the dynamic range of the numerical values, which incurs a cost in terms of register sizes. The system also only uses a sequential prediction scheme which prevents parallel calculation.
It is an object of the present invention to provide a method and system that goes some way towards solving the above problems.